1
Os Mecanismos do Controle de Cópia
AI037Lesson 16
00:00

Dominar o ciclo de vida de um objeto C++ é comandar os próprios mecanismos da existência no heap e pilha. O controle de cópia define como uma classe gerencia seu tempo de vida através de duas operações: o construtor de cópia e o operador de atribuição por cópia.

1. Inicialização versus Atribuição

Inicialização direta (por exemplo, string dots(10, '.')) invoca um construtor diretamente. No entanto, inicialização por cópia (string s2 = dots) depende do construtor de cópia. Diferentemente da inicialização, atribuição (trans = acum) sobrescreve um objeto existente usando operador=. Uma restrição crítica: o parâmetro do construtor de cópia deve ser uma referência (const Foo&); caso contrário, passar um argumento por valor acionaria um loop recursivo infinito de chamadas de cópia.

Objeto Fonte[Dados A]Objeto Destino[Dados A]Cópia por MembroConstrutor de Cópia / operador=

2. O Papel da Síntese

Se você não definir esses membros, o compilador fornece versões sintetizadas que realizam cópias por membro. Cuidado: embora sejam suficientes para tipos simples, frequentemente falham em classes que gerenciam memória dinâmica, levando a ponteiros pendurados ou liberações duplicadas.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>